package design._03_prototype.prototypeManager3;

import java.util.Hashtable;
/*
 	原型管理器(Prototype Manager)是将多个原型对象存储在一个集合中供客户端使用，
 	它是一个 专门负责克隆对象的工厂，其中定义了一个集合用于存储原型对象，如果需要某个原型对象的一个克隆，
 	可以通过复制集合中对应的原型对象来获得。在原型管理器中针对抽象原型类进行编程，以便扩展。
 
 */
//原型管理器（使用饿汉式单例实现）
public class PrototypeManager {
	
	private Hashtable ht=new Hashtable(); //定义一个Hashtable，用于存储原型对象
	private static PrototypeManager pm = new PrototypeManager();
	
	//为Hashtable增加公文对象
	private PrototypeManager() {
		ht.put("far",new FAR());
		ht.put("srs",new SRS());
	}
	
	//增加新的公文对象
	public void addOfficialDocument(String key,OfficialDocument doc) {
		ht.put(key,doc);
	}
	
	//通过浅克隆获取新的公文对象
	public OfficialDocument getOfficialDocument(String key) {
		return ((OfficialDocument)ht.get(key)).clone();
	}
	
	//单例方法
	public static PrototypeManager getPrototypeManager() {	
		return pm;
	}
}
